Unidade máxima de transmissão
Em redes de computadores, MTU é o acrónimo para a expressão inglesa Maximum Transmission Unit, que em português significa Unidade Máxima de Transmissão, e refere-se ao tamanho do maior pacote que uma camada de um protocolo de comunicação pode transmitir.
Teoria
[editar | editar código-fonte]O protocolo IP permite a fragmentação de pacotes, possibilitando que um datagrama seja dividido em pedaços, cada um com tamanho suficiente para poder ser transmitido por uma conexão com o MTU menor que o datagrama original. Esta fragmentação acontece na camada de Internet do modelo TCP/IP usando o Protocolo IP (camada 3 do modelo OSI) e usa o parâmetro MTU da interface de rede que irá enviar o pacote pela conexão. O processo de fragmentação marca os fragmentos do pacote original para que a camada de Internet do modelo TCP/IP usando o protocolo IP do destinatário possa montar os pacotes recebidos, reconstituindo o datagrama original.
A camada da Internet define o "caminho MTU" de uma transmissão Internet como o menor valor MTU de qualquer um dos hops do IP do path desde o endereço de origem até o endereço de destino. Visto de outro modo, o "caminho MTU" define o maior valor de MTU que pode passar pelo caminho sem que os seus pacotes sofram posterior fragmentação.
O RFC 2000 descreve o "Path MTU discovery", uma técnica para determinar o caminho MTU entre dois hospedeiros IP de forma a evitar fragmentação de IP. Esta técnica utiliza o feedback para o endereço fonte dos resultados de enviar datagramas de tamanhos progressivamente maiores, com o bit DF (Don't Fragment) on - qualquer dispositivo que ao longo do caminho necessite fragmentar o pacote irá largá-lo e enviar uma resposta ICMP "datagrama demasiado grande" para o endereço de origem. Através deste teste, o hospedeiro de origem "aprende" qual o valor máximo de MTU que atravessa a rede sem que seja fragmentado.
Problemas potenciais e resolução
[editar | editar código-fonte]Infelizmente, um número crescente de redes bloqueia todo o tráfego ICMP (por exemplo, para evitar ataques denial of service - isto impede o funcionamento da técnica acima explicada. Frequentemente descobrimos esta fragmentação nos casos em que a ligação funciona com volumes baixos de tráfego mas bloqueia sempre que o host envia uma grande quantidade de dados ao mesmo tempo (por exemplo, com uso do IRC um cliente pode chegar até ao nospoof ping mas depois não obtém qualquer resposta dado que a ligação é bloqueada pela enorme quantidade de mensagens de boas vindas. Paralelamente, numa rede IP, o "caminho" desde o endereço de origem até o endereço de destino pode ser alterado dinamicamente, em resposta a variados eventos (balanceamento de carga, congestionamento, downtimes, etc.) - isto pode resultar em que o caminho MTU se modifique (por vezes repetidamente) durante uma transmissão, o que pode introduzir ainda mais perda de pacotes antes que o host descubra o novo valor seguro de MTU.
A maioria das modernas ethernet LANs usam um MTU de 1500 bytes. Contudo, sistemas como PPPoE irão reduzir isto, causando a entrada em ação da descoberta do caminho MTU, o que pode ter como consequência fazer com que alguns sites protegidos por firewall mal configuradas se tornem inacessíveis. Podemos contudo reparar isto, dependendo do ponto da rede que controlamos: por exemplo, podemos alterar o MSS (maximum segment size) no pacote inicial que configura o TCP na firewall (TCP MSS Clamping).
Alguns sistemas IBM (a XSeries, por exemplo), que suportam o mais velho protocolo ethernet podem necessitar que se estabeleça o valor de MTU em 1492 bytes de modo a poderem ser utilizadas numa típica LAN.
Podemos alterar o MTU acessando as configurações do gateway padrão da rede.
Ligações externas
[editar | editar código-fonte]- http://www.tech-faq.com/mtu.shtml Tamanhos padrão de MTU - Em inglês
- RFC 1191
- Path MTU Discovery and Filtering ICMP - Em inglês
- https://web.archive.org/web/20051201003611/http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TCPMSSTARGET How to set the TCP MSS value using iptables
- https://web.archive.org/web/20060203093235/http://help.expedient.net/broadband/mtu_ping_test.shtml Discovering of MTU value via ping and setting it in Microsoft Windows
- http://www.dslreports.com/drtcp DrTCP - um utilitário para optimizar o valor de MTU no ambiente Microsoft Windows
- mturoute - um utilitário de consola para a detecção e resolução de problemas MTU.